"""
闭包的特点：
    1.存在内外层函数嵌套的情况
    2.内层函数引用了外层函数的变量或者参数(自由变量)
    3.外层函数把内层的这个函数本身当做返回值进行返回
注意：
    在闭包中，闭包函数返回的内部函数，是函数名，不包含括号
"""


def outer():
    print('outer')
    a = 2

    def inner():
        print('inner')
        # nonlocal a  # 闭包是由于函数内部使用了函数外部的变量。这个函数对象不销毁，则外部函数的局部变量也不会被销毁
        print(f'a*5={a * 5}')

    return inner


inn = outer()
print('------')
inn()
